package com.wskj.workbench.service;

import com.wskj.common.core.mybatisplus.core.IServicePlus;
import com.wskj.common.core.page.TableDataInfo;
import com.wskj.workbench.bo.app.AppTbUserJoinOrderAddBo;
import com.wskj.workbench.bo.app.AppTbUserJoinOrderEditBo;
import com.wskj.workbench.bo.app.AppTbUserJoinOrderQueryBo;
import com.wskj.workbench.bo.web.TbUserJoinOrderAddBo;
import com.wskj.workbench.bo.web.TbUserJoinOrderEditBo;
import com.wskj.workbench.bo.web.TbUserJoinOrderQueryBo;
import com.wskj.workbench.domain.TbUserJoinOrder;
import com.wskj.workbench.vo.app.AppTbUserJoinOrderInfoVo;
import com.wskj.workbench.vo.app.AppTbUserJoinOrderVo;
import com.wskj.workbench.vo.web.TbUserJoinOrderVo;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Collection;
import java.util.List;

/**
 * 用户入驻申请订单Service接口
 *
 * @author wskj
 * @date 2024-09-25
 */
public interface ITbUserJoinOrderService extends IServicePlus<TbUserJoinOrder> {
    /**
     * 查询单个
     *
     * @return
     */
    TbUserJoinOrderVo queryById(Long id);

    /**
     * 查询列表
     */
    TableDataInfo<TbUserJoinOrderVo> queryPageList(TbUserJoinOrderQueryBo bo);

    /**
     * 查询列表
     */
    List<TbUserJoinOrderVo> queryList(TbUserJoinOrderQueryBo bo);

    /**
     * 根据新增业务对象插入用户入驻申请订单
     *
     * @param bo 用户入驻申请订单新增业务对象
     * @return
     */
    Boolean insertByAddBo(TbUserJoinOrderAddBo bo);

    /**
     * 根据编辑业务对象修改用户入驻申请订单
     *
     * @param bo 用户入驻申请订单编辑业务对象
     * @return
     */
    Boolean updateByEditBo(TbUserJoinOrderEditBo bo);

    /**
     * 校验并删除数据
     *
     * @param ids     主键集合
     * @param isValid 是否校验,true-删除前校验,false-不校验
     * @return
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 导入数据
     *
     * @param tbUserJoinOrderList 排污口水质数据
     * @return String
     */
    String importTbUserJoinOrder(List<TbUserJoinOrderVo> tbUserJoinOrderList);


    /**
     * 用户申请入住
     */
    AppTbUserJoinOrderVo apply(AppTbUserJoinOrderAddBo bo) throws Exception;


    void wxPayNotify(HttpServletRequest request, HttpServletResponse response) throws Exception;


    Boolean audit(TbUserJoinOrderEditBo bo);

    void autoCancel();



    AppTbUserJoinOrderVo updateAuth(AppTbUserJoinOrderEditBo bo) throws Exception;


    /**
     * 用户申请入住详情接口
     */
    AppTbUserJoinOrderInfoVo join(AppTbUserJoinOrderQueryBo bo) throws Exception;


}
